home *** CD-ROM | disk | FTP | other *** search
/ Power Programmierung / Power-Programmierung (Tewi)(1994).iso / magazine / msysjour / vol06 / 01 / kermit / wnkint.c < prev    next >
C/C++ Source or Header  |  1990-12-31  |  7KB  |  176 lines

  1. /*
  2.  * WNKINT.C
  3.  *
  4.  * Kermit initialization module
  5.  *
  6.  * Copyright (c) by
  7.  * William S. Hall
  8.  * 3665 Benton Street #66
  9.  * Santa Clara, CA 95051
  10.  *
  11.  */
  12.  
  13. #define NOKANJI
  14. #define NOMINMAX
  15. #define NOATOM
  16. #define NOSOUND
  17. #include <windows.h>
  18. #include <stdlib.h>
  19. #include <string.h>
  20. #include "ascii.h"
  21. #include "wnkerm.h"
  22.  
  23. /*
  24.  * krmInit
  25.  *
  26.  * This function must be called during terminal initialization,
  27.  * preferably in response to WM_CREATE.
  28.  * At this time, Kermit receives the main Window handle,
  29.  * a pointer to a linear buffer which will be filled during file transfer
  30.  * by reading the communications port, a pointer to the buffer's
  31.  * current length, and a pointer to the comm port id number.
  32.  * After these values have been recorded, then WIN.INI is
  33.  * read for the various protocol and packet parameters.
  34.  */
  35. BOOL FAR krmInit(HWND hWnd, BYTE *bufptr, int *buflen, int *cid)
  36. {
  37.  
  38.     char szAppStr[80];
  39.     char szKeyStr[80];
  40.  
  41.     Kermit.hWnd = hWnd;
  42.     Kermit.hInst = GetWindowWord(hWnd, GWW_HINSTANCE);
  43.     krmBufptr = bufptr;
  44.     krmBuflen = buflen;
  45.     krmcid = cid;
  46.  
  47.     KermParams.ebquote = KRM_DEFEBQUOTE;
  48.     KermParams.rpquote = KRM_DEFRPTQUOTE;
  49.  
  50.     LoadString(Kermit.hInst,IDS_KRM_KERMITMENU,(LPSTR)szAppStr,sizeof(szAppStr));
  51.     ChangeMenu(GetMenu(hWnd), 0, 
  52.            szAppStr, LoadMenu(Kermit.hInst, "KRMMENU"), 
  53.            MF_APPEND | MF_BYPOSITION | MF_POPUP);
  54.  
  55.     LoadString(Kermit.hInst,IDS_KRM_KERMIT,(LPSTR)szAppStr,sizeof(szAppStr));
  56.     krmIcon = LoadIcon(Kermit.hInst, szAppStr);
  57.     
  58.     LoadString(Kermit.hInst, IDS_KRM_TIMER, szKeyStr, sizeof(szKeyStr));
  59.     KermParams.Timer = GetProfileInt(szAppStr, szKeyStr, KRM_DEFTIMER);
  60.  
  61.     LoadString(Kermit.hInst, IDS_KRM_FILEWARN, szKeyStr, sizeof(szKeyStr));
  62.     KermParams.FileWarning = GetProfileInt(szAppStr, szKeyStr, KRM_DEFFILEWARN);
  63.  
  64.     LoadString(Kermit.hInst, IDS_KRM_BELL, szKeyStr, sizeof(szKeyStr));
  65.     KermParams.Bell = GetProfileInt(szAppStr, szKeyStr, KRM_DEFBELL);
  66.  
  67.     LoadString(Kermit.hInst, IDS_KRM_VERBOSE, szKeyStr, sizeof(szKeyStr));
  68.     KermParams.verbose = GetProfileInt(szAppStr,szKeyStr,KRM_DEFVERBOSE);
  69.  
  70.     LoadString(Kermit.hInst, IDS_KRM_DISCARD, szKeyStr, sizeof(szKeyStr));
  71.     KermParams.DiscardPartialFile = 
  72.                 GetProfileInt(szAppStr,szKeyStr,KRM_DEFDISCARD);
  73.  
  74.     LoadString(Kermit.hInst, IDS_KRM_BLOCKCHECKTYPE, szKeyStr, sizeof(szKeyStr));
  75.     KermParams.BlockCheckType = GetProfileInt(szAppStr,szKeyStr,KRM_DEFBLOCKCHECK);
  76.     if ((KermParams.BlockCheckType < 1) || (KermParams.BlockCheckType > 3))
  77.         KermParams.BlockCheckType = 1;
  78.  
  79.     LoadString(Kermit.hInst, IDS_KRM_RETRYLIMIT, szKeyStr, sizeof(szKeyStr));
  80.     KermParams.RetryLimit = GetProfileInt(szAppStr,szKeyStr,KRM_DEFRETRYLIMIT);
  81.     if ((KermParams.RetryLimit < KRM_MINRETRYLIMIT) 
  82.             || (KermParams.RetryLimit > KRM_MAXRETRYLIMIT))
  83.         KermParams.RetryLimit = KRM_DEFRETRYLIMIT;
  84.  
  85.     LoadString(Kermit.hInst, IDS_KRM_SENDDELAY, szKeyStr, sizeof(szKeyStr));
  86.     KermParams.SendDelay = GetProfileInt(szAppStr,szKeyStr,KRM_DEFSENDDELAY);
  87.     if (KermParams.SendDelay > KRM_MAXSENDDELAY) 
  88.         KermParams.SendDelay = KRM_DEFSENDDELAY;
  89.  
  90.     LoadString(Kermit.hInst, IDS_KRM_SENDMARK, szKeyStr, sizeof(szKeyStr));
  91.     sndparams.mark = (BYTE)GetProfileInt(szAppStr,szKeyStr,KRM_DEFMARK);
  92.     if (sndparams.mark >= ' ') 
  93.         sndparams.mark = KRM_DEFMARK;
  94.  
  95.     LoadString(Kermit.hInst, IDS_KRM_RCVMARK, szKeyStr, sizeof(szKeyStr));
  96.     rcvparams.mark = (BYTE)GetProfileInt(szAppStr,szKeyStr,KRM_DEFMARK);
  97.     if (rcvparams.mark >= ' ') 
  98.         rcvparams.mark = KRM_DEFMARK;
  99.  
  100.     LoadString(Kermit.hInst, IDS_KRM_SENDMAXLEN, szKeyStr, sizeof(szKeyStr));
  101.     sndparams.maxpktsize = GetProfileInt(szAppStr,szKeyStr,KRM_DEFPACKETSIZE);
  102.     if ((sndparams.maxpktsize > KRM_MAXPACKETSIZE) ||
  103.             (sndparams.maxpktsize < KRM_MINPACKETSIZE))
  104.         sndparams.maxpktsize = KRM_DEFPACKETSIZE;
  105.  
  106.     LoadString(Kermit.hInst, IDS_KRM_RCVMAXLEN, szKeyStr, sizeof(szKeyStr));
  107.     rcvparams.maxpktsize = GetProfileInt(szAppStr,szKeyStr,KRM_DEFPACKETSIZE);
  108.     if ((rcvparams.maxpktsize > KRM_MAXPACKETSIZE) ||
  109.             (rcvparams.maxpktsize < KRM_MINPACKETSIZE))
  110.         rcvparams.maxpktsize = KRM_DEFPACKETSIZE;
  111.  
  112.     LoadString(Kermit.hInst, IDS_KRM_SENDTIMEOUT, szKeyStr, sizeof(szKeyStr));
  113.     sndparams.timeout = GetProfileInt(szAppStr,szKeyStr,KRM_DEFTIMEOUT);
  114.     if ((sndparams.timeout > KRM_MAXTIMEOUT) ||
  115.             (sndparams.timeout < KRM_MINTIMEOUT))
  116.         sndparams.timeout = KRM_DEFTIMEOUT;
  117.  
  118.     LoadString(Kermit.hInst, IDS_KRM_RCVTIMEOUT, szKeyStr, sizeof(szKeyStr));
  119.     rcvparams.timeout = GetProfileInt(szAppStr,szKeyStr,KRM_DEFTIMEOUT);
  120.     if ((rcvparams.timeout > KRM_MAXTIMEOUT) ||
  121.             (rcvparams.timeout < KRM_MINTIMEOUT))
  122.         rcvparams.timeout = KRM_DEFTIMEOUT;
  123.  
  124.     LoadString(Kermit.hInst, IDS_KRM_SENDPADCOUNT, szKeyStr, sizeof(szKeyStr));
  125.     sndparams.padcount = GetProfileInt(szAppStr,szKeyStr,KRM_DEFPADCOUNT);
  126.     if (sndparams.padcount > KRM_MAXPADCOUNT)
  127.         sndparams.padcount = KRM_DEFPADCOUNT;
  128.  
  129.     LoadString(Kermit.hInst, IDS_KRM_RCVPADCOUNT, szKeyStr, sizeof(szKeyStr));
  130.     rcvparams.padcount = GetProfileInt(szAppStr,szKeyStr,KRM_DEFPADCOUNT);
  131.     if (rcvparams.padcount > KRM_MAXPADCOUNT)
  132.         rcvparams.padcount = KRM_DEFPADCOUNT;
  133.  
  134.     LoadString(Kermit.hInst, IDS_KRM_SENDPADCHAR, szKeyStr, sizeof(szKeyStr));
  135.     sndparams.padchar = (BYTE)GetProfileInt(szAppStr,szKeyStr,KRM_DEFPADCHAR);
  136.     if ((sndparams.padchar >= ' ') && (sndparams.padchar < DEL))
  137.         sndparams.padchar = KRM_DEFPADCHAR;
  138.  
  139.     LoadString(Kermit.hInst, IDS_KRM_RCVPADCHAR, szKeyStr, sizeof(szKeyStr));
  140.     rcvparams.padchar = (BYTE)GetProfileInt(szAppStr,szKeyStr,KRM_DEFPADCHAR);
  141.     if ((rcvparams.padchar >= ' ') && (rcvparams.padchar != DEL))
  142.         rcvparams.padchar = KRM_DEFPADCHAR;
  143.  
  144.     LoadString(Kermit.hInst, IDS_KRM_SENDEOL, szKeyStr, sizeof(szKeyStr));
  145.     sndparams.eol = (BYTE)GetProfileInt(szAppStr,szKeyStr,KRM_DEFEOL);
  146.     if (sndparams.eol >= ' ')
  147.     sndparams.eol = KRM_DEFEOL;
  148.  
  149.     LoadString(Kermit.hInst, IDS_KRM_RCVEOL, szKeyStr, sizeof(szKeyStr));
  150.     rcvparams.eol = (BYTE)GetProfileInt(szAppStr,szKeyStr,KRM_DEFEOL);
  151.     if (rcvparams.eol >= ' ')
  152.     rcvparams.eol = KRM_DEFEOL;
  153.     
  154.     LoadString(Kermit.hInst, IDS_KRM_SENDQUOTE, szKeyStr, sizeof(szKeyStr));
  155.     sndparams.quote = (BYTE)GetProfileInt(szAppStr,szKeyStr,KRM_DEFQUOTE);
  156.     if (((sndparams.quote <= 32) || (sndparams.quote >= 63)) &&
  157.     ((sndparams.quote <= 95) || (sndparams.quote >= 127)))
  158.     sndparams.quote = KRM_DEFQUOTE;
  159.  
  160.     LoadString(Kermit.hInst, IDS_KRM_RCVQUOTE, szKeyStr, sizeof(szKeyStr));
  161.     rcvparams.quote = (BYTE)GetProfileInt(szAppStr,szKeyStr,KRM_DEFQUOTE);
  162.     if (((rcvparams.quote <= 32) || (rcvparams.quote >= 63)) &&
  163.     ((rcvparams.quote <= 95) || (rcvparams.quote >= 127)))
  164.     rcvparams.quote = KRM_DEFQUOTE;
  165.  
  166.     Kermit.fpTimer = MakeProcInstance((FARPROC)krmDoTimeout, Kermit.hInst);
  167.     Kermit.fpXfer = MakeProcInstance((FARPROC)krmXferDlgBox, Kermit.hInst);
  168.  
  169.     if  (!(Kermit.fpTimer && Kermit.fpXfer)) {
  170.     krmShowMessage(IDS_KRM_CANNOTINIT);
  171.     return FALSE;
  172.     }
  173.     return TRUE;
  174. }
  175.  
  176.